package org.apache.commons.pool2;

/**
 * 类的描述
 *
 * @author ztkool
 * @version v
 */
public enum PooledObjectState {
    /**
     * idel：在队列中，未使用
     */
    IDLE,

    /**
     * allocated：使用中
     */
    ALLOCATED,

    /**
     * eviction：在队列中，当前正在测试是否可能逐出。
     */
    EVICTION,

    /**
     * eviction return to head；不在队列中，目前正在测试是否可能逐出。
     */
    EVICTION_RETURN_TO_HEAD,

    /**
     * validation：在队列中，当前正在验证。
     */
    VALIDATION,

    /**
     * validation preallocated：不在队列中，当前正在验证。
     * <p>
     * 对象是在验证时借用的，因为配置了testOnBorrow，所以它被从队列中删除并预先分配。它应该在验证完成后分配。
     */
    VALIDATION_PREALLOCATED,

    /**
     * validation return to head：不在队列中，当前正在验证。
     * <p>
     * 在先前进行逐出测试时尝试借用该对象，从而将其从队列中移除。一旦验证完成，它应该返回到队列的头部。
     */
    VALIDATION_RETURN_TO_HEAD,

    /**
     * invalid：维护失败（如逐出测试或验证），将/已被销毁
     */
    INVALID,

    /**
     * abandoned：视为放弃，无效。
     */
    ABANDONED,

    /**
     * returning：返回池中。
     */
    RETURNING;

    PooledObjectState() {
    }
}
